export default {
  namespaced: true,
  state: {
    cartData: [],
  },
  mutations: {
    SET_CART(state, payload) {
      // state.cartData = payload;
      //1.先检查cartData有没有传入这条数据
      let target = state.cartData.find((item) => item.id === payload.id);

      // 没有
      if (!target) {
        //重新定义购物车数据
        //将数据添加到cartData，第一次加入进来的数量为1，需要手动添加数量count这个字段
        let obj = {
          title: payload.title,
          price: payload.price,
          count: 1,
          id: payload.id,
        };
        state.cartData.push(obj);
      } else {
        // 有   让数量count +1
        target.count++;
      }
      // state.cartData.push(payload);
    },
    delone(state, payload) {
      state.cartData = payload;
    },
  },
  actions: {
    ADD_CART(context, payload) {
      // 这里这样写的目的可以学到在一个模块化的store中操作另一个store的mutation或者action;
      // console.log("cart action---", payload);
      context.commit("SET_CART", payload);

      //需要提交另一个mutation，
      //通过传入root：true，把这个操作转换为rootstore的操作等同于this.$store.commit('product/DECREASE_INVENTORY',payload.id')
      context.commit("product/DECREASE_INVENTORY", payload.id, { root: true });
    },
  },
  getters: {
    //计算商品总价
    total(state) {
      return state.cartData
        .reduce((total, item) => {
          return (total += item.price * item.count);
        }, 0)
        .toFixed(2);
    },
  },
};
